import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import 'lib-flexible/flexible'
import axios from 'axios'
import VueAxios from 'vue-axios'
import {Tab, Tabs,Dialog,cell,Area, AddressEdit, Card ,Popup,Checkbox, CheckboxGroup, SubmitBar  ,RadioGroup, Radio ,Swipe, SwipeItem,Button,Form,Field,Tabbar, TabbarItem, Search,  Toast , NavBar, Stepper, GoodsAction, GoodsActionIcon, GoodsActionButton, Icon} from 'vant';
import {vaildateTokenUrls} from './assets/js/url.js'

Vue.use(Tab).use(Tabs).use(Dialog).use(cell).use(Area).use(AddressEdit).use(Card).use(Popup).use(CheckboxGroup).use(Checkbox).use(SubmitBar).use(RadioGroup).use(Radio).use(SwipeItem).use(Swipe).use(Search).use(Tabbar).use(TabbarItem).use(Icon).use(Toast).use(NavBar).use(Stepper).use(GoodsAction).use(GoodsActionButton).use(GoodsActionIcon).use(Form).use(Field).use(Button);

// 设置基本路径
axios.defaults.baseURL = 'http://www.kangliuyong.com:10002',
  // axios拦截器
  // 添加请求拦截器
  axios.interceptors.request.use(config => {
    // 在发送请求之前做些什么
    // 在发送请求之前加载提示
    Toast.loading({
      message: '加载中...',
      forbidClick: true,
      duration: 0
    });
    
    let appkey="U2FsdGVkX19WSQ59Cg+Fj9jNZPxRC5y0xB1iV06BeNA=";
    // 在请求之前获取token
    let token=sessionStorage.getItem('token');
    
    // 如果进行了post请求 首先判断是否有请求的参数 没有则定义为空对象
    if (config.method === 'post') {
      config.data = config.data || {};
      let dataString = '';
      for (let key in config.data) {
        dataString += `${key}=${config.data[key]}&`
      }
      config.data=dataString+'appkey='+appkey;
      // 
      // 找到则需要验证  判断是否请求的路径包含在url。js中,在则需要加token,查询用户的信息
      if(vaildateTokenUrls.indexOf(config.url)>-1){
        config.data+=`&tokenString=${token}`;
        // 
      }
    }else if(config.method==='get'){
      config.params = config.params || {};
      // 
      config.params.appkey=appkey;
      // 
       // 找到则需要验证
       if(vaildateTokenUrls.indexOf(config.url)>-1){
        config.params.tokenString=token;
      }
    }
    return config;
  }, function (error) {
    // 对请求错误做些什么
    Toast.clear();
    return Promise.reject(error);
  });

// 添加响应拦截器
axios.interceptors.response.use(response => {
  // 对响应数据做点什么
  // 服务器响应数据后关闭提示
  Toast.clear();
  return response;
}, function (error) {
  // 对响应错误做点什么
  Toast.clear();
  return Promise.reject(error);
});

Vue.use(VueAxios, axios)


Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
